﻿DROP PROCEDURE [dbo].[Propiedades_InsertarPisoNuevo];
DROP PROCEDURE [dbo].[Propiedades_GetHabitacionesSinLaSeleccionada];
DROP PROCEDURE [dbo].[Propiedades_ObtenerHabitacionPorId];
DROP PROCEDURE [dbo].[Propiedades_InsertarHabitacionNueva];
DROP PROCEDURE [dbo].[Propiedades_BorrarHabitacionDeHotel];
DROP PROCEDURE [dbo].[Propiedades_AcutalizarHabitacion];
DROP PROCEDURE [dbo].[Propiedades_PisosDelHotel];
DROP PROCEDURE [dbo].[Propiedades_habitacionPorPiso];
DROP PROCEDURE [dbo].[Propiedades_habitacionPorTipo];
DROP PROCEDURE [dbo].[Propiedades_habitacionPorNumero];
DROP PROCEDURE [dbo].[Propiedades_GetAllHoteles];
DROP PROCEDURE [dbo].[Propiedades_GetHabitacionesPorHotel];
DROP PROCEDURE [dbo].[Propiedades_GetHabitacionesPorTipo];
DROP PROCEDURE [dbo].[Propiedades_GetHabitacionesPorPiso];
DROP PROCEDURE [dbo].[Propiedades_GetHotelByUsername];

----------------------------------------------------------
                 ---- DROP PROPIEDAD ----
----------------------------------------------------------
DROP PROCEDURE [dbo].[insertarPropiedad];
DROP PROCEDURE [dbo].[consultarPropiedadesNombre];
DROP PROCEDURE [dbo].[consultarPropiedadesHotel];
DROP PROCEDURE [dbo].[consultarPropiedadesId];
DROP PROCEDURE [dbo].[consultarPropiedadesHoteles];
DROP PROCEDURE [dbo].[modificarPropiedad];
DROP PROCEDURE [dbo].[eliminarPropiedad];
----------------------------------------------------------
                 ---- DROP HOTEL ----
----------------------------------------------------------
DROP PROCEDURE [dbo].[insertarHotel];
DROP PROCEDURE [dbo].[bloquearDesbloquearHotel]; 
DROP PROCEDURE [dbo].[modificarHotel];
DROP PROCEDURE [dbo].[mostrarHotel];
DROP PROCEDURE [dbo].[obtenerNombresHotel];
DROP PROCEDURE [dbo].[validarNombreHotelUnico ];
DROP PROCEDURE [dbo].[insertarPisos];
----------------------------------------------------------
           ---- PROCEDIMIENTOS HABITACIONES ----
----------------------------------------------------------
GO
CREATE PROCEDURE Propiedades_GetHabitacionesSinLaSeleccionada
@_idHotel int, @_idHabitacion int
AS
SELECT IdHabitacion, numeroHabitacion 
FROM Habitacion 
WHERE fkHotel = @_idHotel and idHabitacion <> @_idHabitacion
ORDER BY numeroHabitacion

GO
CREATE PROCEDURE Propiedades_GetHotelByUsername
@_nombreUsuario nvarchar(max)
AS
SELECT fkHotel
FROM Empleado, Usuario
WHERE nombreUsuario = @_nombreUsuario AND fkEmpleado = IdEmpleado

GO
CREATE PROCEDURE Propiedades_InsertarPisoNuevo
@_idHotel int, @_pisoNuevo int
as
INSERT INTO PISO (fkHotel, numeroPiso) 
VALUES (@_idHotel, @_pisoNuevo)

GO
CREATE PROCEDURE Propiedades_ObtenerHabitacionPorId
@IdHabitacion int
AS
SELECT IdHabitacion, numeroHabitacion, tipoHabitacion, disponibilidadHabitacion, montoHabitacion, capacidadHabitacion, fkPiso, (SELECT numeroPiso FROM Piso WHERE fkPiso = IdPiso) as Piso, Habitacion.fkHotel as fkHotel, descripcionHabitacion
FROM Habitacion
WHERE IdHabitacion = @IdHabitacion

GO
CREATE PROCEDURE Propiedades_InsertarHabitacionNueva
@numeroHabitacion int,@tipohabitacion nvarchar(max),@monto float, @capacidad int, @piso int,@fkHotel int,@descripcion nvarchar(max)
AS
INSERT INTO HABITACION (numeroHabitacion,tipoHabitacion, disponibilidadHabitacion, montoHabitacion, capacidadHabitacion, fkPiso, fkHotel, descripcionHabitacion)
 VALUES (@numeroHabitacion,@tipohabitacion,'true',@monto, @capacidad, (SELECT IdPiso FROM Piso WHERE numeroPiso = @piso AND Piso.fkHotel = @fkHotel) ,@fkHotel,@descripcion);

GO
CREATE PROCEDURE Propiedades_BorrarHabitacionDeHotel
@IdHabitacion int
as
DELETE FROM HABITACION 
WHERE IdHabitacion = @IdHabitacion

GO
CREATE PROCEDURE Propiedades_AcutalizarHabitacion
@_numeroHabitacion smallint, @_tipoHabitacion nvarchar(max), @_disponibilidadHabitacion bit, @_montoHabitacion float, @_capacidadHabitacion smallint, @_pisoHabitacion int, @_idHabitacion int, @_descripcion nvarchar(max)
as
UPDATE Habitacion SET numeroHabitacion = @_numeroHabitacion, tipoHabitacion= @_tipoHabitacion, disponibilidadHabitacion=1, montoHabitacion=@_montoHabitacion, capacidadHabitacion=@_capacidadHabitacion, fkPiso= @_pisoHabitacion, descripcionHabitacion = @_descripcion
WHERE (IdHabitacion = @_idHabitacion)

GO
CREATE PROCEDURE Propiedades_PisosDelHotel
@IdHotel int
as
SELECT numeroPiso 
FROM Piso 
WHERE fkHotel = @IdHotel

GO
CREATE PROCEDURE Propiedades_habitacionPorPiso
@numeroPiso int, @IdHotel int
as
SELECT IdHabitacion, numeroHabitacion, tipoHabitacion, disponibilidadHabitacion, montoHabitacion, capacidadHabitacion, fkPiso, (SELECT numeroPiso FROM Piso WHERE fkPiso = IdPiso) as Piso, Habitacion.fkHotel, descripcionHabitacion
FROM Habitacion,Piso
WHERE Piso.fkHotel=@IdHotel AND Habitacion.fkPiso = Piso.IdPiso AND Piso.numeroPiso = @numeroPiso
ORDER BY Piso, numerohabitacion ASC

GO
CREATE PROCEDURE Propiedades_habitacionPorTipo 
@tipoHabitacion	nvarchar(max), @IdHotel int
as
SELECT IdHabitacion, numeroHabitacion, tipoHabitacion, disponibilidadHabitacion, montoHabitacion, capacidadHabitacion, fkPiso, (SELECT numeroPiso FROM Piso WHERE fkPiso = IdPiso) as Piso, Habitacion.fkHotel, descripcionHabitacion
FROM Habitacion 
WHERE  tipoHabitacion = @tipoHabitacion AND fkHotel=@IdHotel 
ORDER BY tipoHabitacion, Piso ASC

GO
CREATE PROCEDURE Propiedades_habitacionPorNumero
@IdHab 	int, @IdHotel int
AS
SELECT IdHabitacion, numeroHabitacion, tipoHabitacion, disponibilidadHabitacion, montoHabitacion, capacidadHabitacion, fkPiso, (SELECT numeroPiso FROM Piso WHERE fkPiso = IdPiso) as Piso, Habitacion.fkHotel, descripcionHabitacion
FROM Habitacion 
WHERE IdHabitacion = @IdHab AND fkHotel=@IdHotel
ORDER BY Piso, numeroHabitacion ASC

GO
CREATE PROCEDURE Propiedades_GetAllHoteles
AS
SELECT IdHotel, nombreHotel 
FROM Hotel
ORDER BY nombreHotel

GO
CREATE PROCEDURE Propiedades_GetHabitacionesPorHotel
@IdHotel int
AS
SELECT IdHabitacion, numeroHabitacion 
FROM Habitacion 
WHERE fkHotel = @IdHotel
ORDER BY numeroHabitacion ASC

GO
CREATE PROCEDURE Propiedades_GetHabitacionesPorTipo
@IdHotel int
as
SELECT distinct (tipoHabitacion) 
FROM Habitacion 
WHERE fkHotel = @IdHotel
ORDER BY tipoHabitacion ASC

GO
CREATE PROCEDURE Propiedades_GetHabitacionesPorPiso
@IdHotel int
as
SELECT distinct IdPiso, numeroPiso 
FROM Piso 
WHERE fkHotel = @IdHotel
ORDER BY numeroPiso ASC

----------------------------------------------------------
         ---- PROCEDIMIENTOS PROPIEDAD ----
----------------------------------------------------------
----------------- jonathan ---------------------

GO
/*procedimientos*/	
CREATE PROCEDURE insertarPropiedad
	@fkHotel int,
	@nombrePropiedad varchar(100), 
	@tipoPropiedad varchar(100),
	@descripcionPropiedad varchar(100), 
	@ubicacionPropiedad varchar(100), 
	@imagenPropiedad varchar(200),
	@statusPropiedad varchar(100)
AS
INSERT INTO propiedad VALUES (@fkHotel, @nombrePropiedad, @tipoPropiedad, @descripcionPropiedad, @ubicacionPropiedad, @imagenPropiedad, @statusPropiedad)

GO
Create PROCEDURE consultarPropiedadesNombre
	@parametro varchar(100)
as
SELECT pro.*, hot.nombreHotel
FROM propiedad pro, hotel hot 
WHERE pro.fkHotel = hot.IdHotel
  AND pro.nombrePropiedad LIKE '%'+@parametro+'%'
  AND pro.statusPropiedad = 'Activo'

GO
Create PROCEDURE consultarPropiedadesHotel
	@parametro varchar(100)
as
SELECT propiedad.*, hotel.nombreHotel FROM propiedad, hotel 
WHERE propiedad.fkHotel = hotel.IdHotel 
  AND hotel.nombreHotel LIKE '%'+@parametro+'%'
  AND propiedad.statusPropiedad = 'Activo'
  
GO
Create PROCEDURE consultarPropiedadesId
	@parametro int
as
SELECT propiedad.*, hotel.nombreHotel FROM propiedad, hotel 
WHERE propiedad.fkHotel = hotel.IdHotel 
  AND propiedad.IdPropiedad = @parametro
  AND propiedad.statusPropiedad = 'Activo'
  
GO
Create PROCEDURE consultarPropiedadesHoteles
as
SELECT hotel.IdHotel, hotel.nombreHotel FROM hotel

GO
CREATE PROCEDURE modificarPropiedad
	@idPropiedad int,
	@fkHotel int,
	@nombrePropiedad varchar(100), 
	@tipoPropiedad varchar(100),
	@descripcionPropiedad varchar(100), 
	@ubicacionPropiedad varchar(100), 
	@imagenPropiedad varchar(200)
AS
UPDATE propiedad 
SET fkHotel=@fkHotel, nombrePropiedad=@nombrePropiedad, tipoPropiedad=@tipoPropiedad, descripcionPropiedad=@descripcionPropiedad, ubicacionPropiedad=@ubicacionPropiedad, imagenPropiedad=@imagenPropiedad
WHERE propiedad.idPropiedad=@idPropiedad

GO 
CREATE PROCEDURE eliminarPropiedad
	@idPropiedad int
as
UPDATE propiedad 
SET statusPropiedad='Inactivo'
WHERE idPropiedad=@idPropiedad

/*inserts y pruebas*/
/*
GO
insertarPropiedad 2, 'Gym','Tipo 1', 'Gym de Prueba', 'Altamira', '~/Presentacion/images/imagenpropiedad.jpg'
GO
modificarPropiedad 2, 2, 'Gyyyyyym PApapaaa','Edificio', 'Gym de Prueba', 'Altamira', '~/Presentacion/images/imagenpropiedad.jpg'
*/

------------------------------------------------------------------------------------


-------------------------- Luis ----------------------------------------


GO
CREATE PROCEDURE insertarHotel
@nombreHotel varchar(100), @descripcionHotel varchar(100), @telefonoHotel varchar(20), @estrellaHotel char, @direccionHotel varchar(1000), @fotoHotel varchar(200)
as
INSERT INTO Hotel VALUES (@nombreHotel, @descripcionHotel, @telefonoHotel, @estrellaHotel , @direccionHotel , @fotoHotel, 'Bsf', 1) 

---------------------------------------------------------------------------------------------------------------------------------------------------------------

GO
CREATE PROCEDURE bloquearDesbloquearHotel 
@nombreHotel varchar(100)
as
DECLARE @status varchar(1)
SELECT @status=activoHotel FROM Hotel WHERE nombreHotel=@nombreHotel
if (@status='1')
UPDATE Hotel SET activoHotel=0 WHERE nombreHotel=@nombreHotel
if (@status='0')
UPDATE Hotel SET activoHotel=1 WHERE nombreHotel=@nombreHotel

---------------------------------------------------------------------------------------------------------------------------------------------------------------

GO 
CREATE PROCEDURE modificarHotel	
@nombreActualHotel varchar(100), @nombreHotel varchar(100), @descripcionHotel varchar(100), @telefonoHotel varchar(20), @estrellaHotel varchar(1), @direccionHotel varchar(1000), @fotoHotel varchar(200)
as
UPDATE Hotel SET nombreHotel=@nombreHotel, descripcionHotel=@descripcionHotel, telefonoHotel=@telefonoHotel, estrellaHotel=@estrellaHotel, direccionHotel=@direccionHotel, fotoHotel=@fotoHotel
WHERE nombreHotel=@nombreActualHotel

---------------------------------------------------------------------------------------------------------------------------------------------------------------

GO
CREATE PROCEDURE mostrarHotel
(@nombreHotel varchar(100))
as 
SELECT nombreHotel, descripcionHotel, telefonoHotel, estrellaHotel, direccionHotel, fotoHotel, activoHotel  FROM Hotel WHERE nombreHotel = @nombreHotel;

---------------------------------------------------------------------------------------------------------------------------------------------------------------

GO
CREATE PROCEDURE obtenerNombresHotel
as 
SELECT nombreHotel, IdHotel as NombreHotel FROM Hotel;

---------------------------------------------------------------------------------------------------------------------------------------------------------------

GO
CREATE PROCEDURE validarNombreHotelUnico (@nombreHotel VARCHAR(100))
AS
BEGIN 			
	SELECT Count(*) FROM Hotel WHERE nombreHotel = @nombreHotel
END

---------------------------------------------------------------------------------------------------------------------------------------------------------------

GO
CREATE PROCEDURE insertarPisos (@nombreHotel varchar(100), @pisos int)
as
DECLARE @cont int = 0
DECLARE @IDHOTEL int = (SELECT idHotel FROM Hotel WHERE nombreHotel=@nombreHotel)
WHILE (@cont <= @pisos)
BEGIN
INSERT INTO Piso values (@IDHOTEL,@cont)
SET @cont =@cont + 1
END